iT邦幫忙

2024 iThome 鐵人賽

0
自我挑戰組

前端工程師的java學習紀錄系列 第 36

Day36-Date、Calendar

  • 分享至 

  • xImage
  •  

System.currentTimeMillis() :計算從1970/1/1 0點0分0秒至現在的毫秒數,常用來計算時間差

JDK8以前的兩個Date相關的類,分別又有繼承的關係

  • java.util.Datesuperclass
    • java.sql.Datesub class

java.util.Date

import java.util.Date

Date date1 = new Date(); // 基於當前系統時間實例化

// 基於某個long類型的值去進行實例化,會計算是在1970/1/1 0點0分0秒後經過的時間
Date date2 = new Date(1223129481L); 

System.out.println(date1.toString()); // Thur Oct 24 22:15:30 CST 2024
long milliTimes = date1.getTime();

System.out.println(milliTimes); 
// 1234742687L 返回一個從1970/1/1 0點0分0秒到現在毫秒數(數字我是亂打的)

java.util.Date 中有許多方法、構造器都已經是Deprecated(過時)

假設今天import不同package 中,相同名稱的class 時,要使用以下方法(舉例已經使用java.util.Date 了,但是現在要在同一個地方使用java.sql.Date)

java.sql.Date

import java.util.Date

java.sql.Date date1 = new java.sql.Date(1370202256045L); // 這個類需要在構造器中傳入一個毫秒
System.out.println(date1.toString()); // 2013-06-03

SimpleDateFormat :主要用於將日期時間格式化或是將字串解析為日期,這個類在java.text

import java.text.SimpleDateFormat

SimpleDateFormat simpleDateFormat = new SimpleDateFormat();

Date date1 = new Date();

System.out.println(simpleDateFormat.formate(date1)); // 24-10-24 下午10:31
// 沒有使用構造器時,使用parse()方法就只能解析預設格式的字串: 24-10-24 下午10:31
System.out.println(simpleDateFormat.parse("24-10-24 下午10:31")); // Thur Oct 24 22:15:30 CST 2024

// 可以透過不同的字串參數,去改變SimpleDateFormat構造器的格式
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(simpleDateFormat1.formate(date1));// 2024-10-24 22:31:30
// 有使用構造器去改變顯示日期時間格式時,解析字串就只能使用改變後的格式
System.out.println(simpleDateFormat1.parse("2024-10-24 22:31:30"));
  • 沒有使用構造器時,使用parse()方法就只能解析預設格式的字串
  • 有使用構造器去改變顯示日期時間格式時,解析字串就只能使用改變後的格式
  • 使用parse()時,要處理異常問題

Calendar 類:前面提到Date 很多中很多構造器、方法等都已經Deprected ,有很大一部份是被Calendar 所取代,而Calendar 本身是一個抽象類 ,可以透過它的subclass GregorianCalendar 去進行實例化,或者使用靜態方法getInstance() 去取得GregorianCalendar 的實例

import java.util.Calendar

Calendar calendar = Calendar.getInstance();

System.out.println(calendar.getClass()); // class java.util.GregorianCalendar

Calendar 中有幾個常用的方法

  • get(int field)calendar.get(Calendar.DAY_OF_MONTH) :獲取今天是這個月的第幾天
  • set(int field, xx)calendar.set(Calendar.DAY_OF_MONTH, xx) :將DAY_OF_MONTH 這個靜態屬性設置為xx
  • add(int field, xx)calendar.add(Calendar.DAY_OF_MONTH, xx) :將DAY_OF_MONTH 這個靜態屬性設置的天數增加xx 天,若要減少天數則直接輸入負數
  • getTime()Date date = calendar.getTime();calendar 實例轉換成一個Date 的物件
  • setTime()Date date = new Date(); calendar.setTime(date); 可以將目前calendar 的日期時間設置為傳入的Date 的日期時間

上一篇
Day35-StringBuffer、StringBuilder
下一篇
Day37-Time
系列文
前端工程師的java學習紀錄41
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言